home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-07-11 | 30.3 KB | 1,134 lines |
- // Copyright (C) 2001-2002 Raven Software.
- //
- // bg_public.h -- definitions shared by both the server game and client game modules
-
- // because games can change separately from the main system version, we need a
- // second version that must match between game and cgame
-
- #ifndef __BG_PUBLIC_H__
- #define __BG_PUBLIC_H__
-
- #include "bg_weapons.h"
- #include "../../ui/menudef.h"
- #include "inv.h"
-
- #ifdef GERMAN_BUILD
- #define GAME_VERSION "sof2mp-mod-1.01g"
- #else
- #define GAME_VERSION "sof2mp-mod-1.01"
- #endif
-
- #define DEFAULT_GRAVITY 800
- #define ARMOR_PROTECTION 0.55
-
- #define MAX_ITEMS 256
- #define MAX_HEALTH 100
- #define MAX_ARMOR 100
-
- #define BULLET_SPACING 95
-
- #define DISMEMBER_HEALTH -20
-
- #define RANK_TIED_FLAG 0x4000
-
- #define ITEM_RADIUS 15 // item sizes are needed for client side pickup detection
-
- #define SCORE_NOT_PRESENT -9999 // for the CS_SCORES[12] when only one player is present
-
- #define DEFAULT_PLAYER_Z_MAX 43
- #define CROUCH_PLAYER_Z_MAX 26
- #define PRONE_PLAYER_Z_MAX -12
- #define DEAD_PLAYER_Z_MAX -30
-
- #define DUCK_ACCURACY_MODIFIER 0.75f
- #define JUMP_ACCURACY_MODIFIER 1.5f
-
- #define MINS_Z -46
-
- #define DEFAULT_VIEWHEIGHT 37
- #define CROUCH_VIEWHEIGHT 8
- #define PRONE_VIEWHEIGHT -22
- #define DEAD_VIEWHEIGHT -38
-
- #define BODY_SINK_DELAY 10000
- #define BODY_SINK_TIME 1500
-
- #define LEAN_TIME 250
- #define LEAN_OFFSET 30
-
- //
- // config strings are a general means of communicating variable length strings
- // from the server to all connected clients.
- //
-
- // CS_SERVERINFO and CS_SYSTEMINFO are defined in q_shared.h
-
- #define CS_PLAYERS 2
-
- enum
- {
- // CS_SERVERINFO,
- // CS_SYSTEMINFO,
- // CS_PLAYERS,
-
- CS_MUSIC = CS_CUSTOM,
-
- CS_MESSAGE,
- CS_MOTD,
- CS_WARMUP,
-
- CS_VOTE_TIME,
- CS_VOTE_STRING,
- CS_VOTE_YES,
- CS_VOTE_NO,
- CS_VOTE_NEEDED,
-
- CS_GAME_VERSION,
- CS_GAME_ID,
- CS_LEVEL_START_TIME,
- CS_INTERMISSION,
- CS_SHADERSTATE,
- CS_BOTINFO,
-
- CS_GAMETYPE_TIMER,
- CS_GAMETYPE_MESSAGE,
- CS_GAMETYPE_REDTEAM,
- CS_GAMETYPE_BLUETEAM,
-
- CS_ITEMS,
-
- CS_PICKUPSDISABLED,
-
- // Config string ranges
- CS_MODELS,
- CS_SOUNDS = CS_MODELS + MAX_MODELS,
- CS_LOCATIONS = CS_SOUNDS + MAX_SOUNDS,
- CS_LADDERS = CS_LOCATIONS + MAX_LOCATIONS,
- CS_BSP_MODELS = CS_LADDERS + MAX_LADDERS,
- CS_TERRAINS = CS_BSP_MODELS + MAX_SUB_BSP,
- CS_EFFECTS = CS_TERRAINS + MAX_TERRAINS,
- CS_LIGHT_STYLES = CS_EFFECTS + MAX_FX,
- CS_ICONS = CS_LIGHT_STYLES + (MAX_LIGHT_STYLES*3),
- CS_TEAM_INFO = CS_ICONS + MAX_ICONS,
- CS_AMBIENT_SOUNDSETS = CS_TEAM_INFO + TEAM_NUM_TEAMS,
-
- CS_HUDICONS = CS_AMBIENT_SOUNDSETS + MAX_AMBIENT_SOUNDSETS,
-
- CS_MAX = CS_HUDICONS + MAX_HUDICONS,
- };
-
- /*
- #define CS_MUSIC 68
- #define CS_MESSAGE 69 // from the map worldspawn's message field
- #define CS_MOTD 4 // g_motd string for server message of the day
- #define CS_WARMUP 5 // server time when the match will be restarted
- #define CS_VOTE_TIME 8
- #define CS_VOTE_STRING 9
- #define CS_VOTE_YES 10
- #define CS_VOTE_NO 11
- #define CS_VOTE_NEEDED 12
-
- #define CS_GAME_VERSION 16
- #define CS_LEVEL_START_TIME 17 // so the timer only shows the current level
- #define CS_INTERMISSION 18 // when 1, scorelimit/timelimit has been hit and intermission will start in a second or two
- #define CS_SHADERSTATE 19
- #define CS_BOTINFO 20
-
- #define CS_GAMETYPE_TIMER 21 // currently visible timer
- #define CS_GAMETYPE_MESSAGE 22 // Last gametype message
- #define CS_GAMETYPE_REDTEAM 23 // red team group name
- #define CS_GAMETYPE_BLUETEAM 24 // blue team group name
-
- #define CS_ITEMS 28 // string of 0's and 1's that tell which items are present
-
- // these are also in be_aas_def.h - argh (rjr)
- #define CS_MODELS 32
- #define CS_SOUNDS (CS_MODELS+MAX_MODELS)
- #define CS_CHARSKINS (CS_PLAYERS+MAX_CLIENTS)
- #define CS_LOCATIONS (CS_CHARSKINS+MAX_CHARSKINS)
- #define CS_LADDERS (CS_LOCATIONS + MAX_LOCATIONS)
- #define CS_BSP_MODELS (CS_LADDERS + MAX_LADDERS)
- #define CS_TERRAINS (CS_BSP_MODELS + MAX_SUB_BSP)
- #define CS_EFFECTS (CS_PARTICLES+MAX_LOCATIONS)
- #define CS_LIGHT_STYLES (CS_EFFECTS + MAX_FX)
- #define CS_ICONS (CS_LIGHT_STYLES + (MAX_LIGHT_STYLES*3))
- #define CS_TEAM_INFO (CS_ICONS+MAX_ICONS)
- #define CS_AMBIENT_SOUNDSETS (CS_TEAM_INFO+TEAM_NUM_TEAMS)
-
- #define CS_MAX (CS_AMBIENT_SOUNDSETS+MAX_AMBIENT_SOUNDSETS)
- */
-
- #if (CS_MAX) > MAX_CONFIGSTRINGS
- #error overflow: (CS_MAX) > MAX_CONFIGSTRINGS
- #endif
-
- typedef enum { GENDER_MALE, GENDER_FEMALE, GENDER_NEUTER } gender_t;
-
- /*
- ===================================================================================
-
- PMOVE MODULE
-
- The pmove code takes a player_state_t and a usercmd_t and generates a new player_state_t
- and some other output data. Used for local prediction on the client game and true
- movement on the server game.
- ===================================================================================
- */
-
- // animations
- typedef enum
- {
- BOTH_DEATH_NORMAL,
-
- ANIM_START_DEATHS,
-
- BOTH_DEATH_NECK,
- BOTH_DEATH_CHEST_1,
- BOTH_DEATH_CHEST_2,
- BOTH_DEATH_GROIN_1,
- BOTH_DEATH_GROIN_2,
- BOTH_DEATH_GUT_1,
- BOTH_DEATH_GUT_2,
- BOTH_DEATH_HEAD_1,
- BOTH_DEATH_HEAD_2,
- BOTH_DEATH_SHOULDER_LEFT_1,
- BOTH_DEATH_SHOULDER_LEFT_2,
- BOTH_DEATH_ARMS_LEFT_1,
- BOTH_DEATH_ARMS_LEFT_2,
- BOTH_DEATH_LEGS_LEFT_1,
- BOTH_DEATH_LEGS_LEFT_2,
- BOTH_DEATH_LEGS_LEFT_3,
- BOTH_DEATH_THIGH_LEFT_1,
- BOTH_DEATH_THIGH_LEFT_2,
- BOTH_DEATH_ARMS_RIGHT_1,
- BOTH_DEATH_ARMS_RIGHT_2,
- BOTH_DEATH_LEGS_RIGHT_1,
- BOTH_DEATH_LEGS_RIGHT_2,
- BOTH_DEATH_LEGS_RIGHT_3,
- BOTH_DEATH_SHOULDER_RIGHT_1,
- BOTH_DEATH_SHOULDER_RIGHT_2,
- BOTH_DEATH_THIGH_RIGHT_1,
- BOTH_DEATH_THIGH_RIGHT_2,
-
- ANIM_END_DEATHS,
-
- TORSO_DROP,
- TORSO_DROP_ONEHANDED,
- TORSO_DROP_KNIFE,
- TORSO_RAISE,
- TORSO_RAISE_ONEHANDED,
- TORSO_RAISE_KNIFE,
-
- LEGS_IDLE,
- LEGS_IDLE_CROUCH,
- LEGS_WALK,
- LEGS_WALK_BACK,
- LEGS_WALK_CROUCH,
- LEGS_WALK_CROUCH_BACK,
-
- LEGS_RUN,
- LEGS_RUN_BACK,
-
- LEGS_SWIM,
-
- LEGS_JUMP,
- LEGS_JUMP_BACK,
-
- LEGS_TURN,
-
- LEGS_LEAN_LEFT,
- LEGS_LEAN_RIGHT,
- LEGS_LEAN_CROUCH_LEFT,
- LEGS_LEAN_CROUCH_RIGHT,
-
- LEGS_LEANLEFT_WALKLEFT,
- LEGS_LEANLEFT_WALKRIGHT,
- LEGS_LEANRIGHT_WALKLEFT,
- LEGS_LEANRIGHT_WALKRIGHT,
-
- LEGS_LEANLEFT_CROUCH_WALKLEFT,
- LEGS_LEANLEFT_CROUCH_WALKRIGHT,
- LEGS_LEANRIGHT_CROUCH_WALKLEFT,
- LEGS_LEANRIGHT_CROUCH_WALKRIGHT,
-
- TORSO_IDLE_KNIFE,
- TORSO_IDLE_PISTOL,
- TORSO_IDLE_RIFLE,
- TORSO_IDLE_MSG90A1,
- TORSO_IDLE_MSG90A1_ZOOMED,
- TORSO_IDLE_M4,
- TORSO_IDLE_M590,
- TORSO_IDLE_USAS12,
- TORSO_IDLE_RPG,
- TORSO_IDLE_M60,
- TORSO_IDLE_MM1,
- TORSO_IDLE_GRENADE,
-
- TORSO_ATTACK_KNIFE,
- TORSO_ATTACK_KNIFE_THROW,
- TORSO_ATTACK_PISTOL,
- TORSO_ATTACK_RIFLE,
- TORSO_ATTACK_MSG90A1_ZOOMED,
- TORSO_ATTACK_M4,
- TORSO_ATTACK_M590,
- TORSO_ATTACK_USAS12,
- TORSO_ATTACK_RIFLEBUTT,
- TORSO_ATTACK_RPG,
- TORSO_ATTACK_M60,
- TORSO_ATTACK_MM1,
- TORSO_ATTACK_GRENADE_START,
- TORSO_ATTACK_GRENADE_END,
- TORSO_ATTACK_BAYONET,
- TORSO_ATTACK_PISTOLWHIP,
-
- TORSO_RELOAD_M60,
- TORSO_RELOAD_PISTOL,
- TORSO_RELOAD_RIFLE,
- TORSO_RELOAD_MSG90A1,
- TORSO_RELOAD_RPG,
- TORSO_RELOAD_USAS12,
-
- TORSO_RELOAD_M590_START,
- TORSO_RELOAD_M590_SHELL,
- TORSO_RELOAD_M590_END,
-
- TORSO_RELOAD_MM1_START,
- TORSO_RELOAD_MM1_SHELL,
- TORSO_RELOAD_MM1_END,
-
- TORSO_USE,
-
- MAX_ANIMATIONS
-
- } animNumber_t;
-
-
-
- typedef struct animation_s {
- int firstFrame;
- int numFrames;
- int loopFrames; // 0 to numFrames
- int frameLerp; // msec between frames
- int initialLerp; // msec to get to first frame
- int reversed; // true if animation is reversed
- int flipflop; // true if animation should flipflop back to base
- } animation_t;
-
- typedef struct ladder_s
- {
- vec3_t origin;
- vec3_t fwd;
-
- } ladder_t;
-
- // flip the togglebit every time an animation
- // changes so a restart of the same anim can be detected
- #define ANIM_TOGGLEBIT 2048 // Note that there are 12 bits (max 4095) for animations.
- #define ITEM_AUTOSWITCHBIT (1<<31)
-
- typedef enum
- {
- PM_NORMAL, // can accelerate and turn
- PM_NOCLIP, // noclip movement
- PM_SPECTATOR, // still run into walls
- PM_DEAD, // no acceleration or turning, but free falling
- PM_FREEZE, // stuck in place with no control
- PM_INTERMISSION, // no movement or status bar
-
- } pmtype_t;
-
- typedef enum {
- WEAPON_READY,
- WEAPON_SPAWNING,
- WEAPON_RAISING,
- WEAPON_DROPPING,
- WEAPON_RELOADING,
- WEAPON_RELOADING_ALT,
- WEAPON_FIRING,
- WEAPON_FIRING_ALT,
- WEAPON_CHARGING,
- WEAPON_CHARGING_ALT,
- WEAPON_ZOOMIN,
- WEAPON_ZOOMOUT,
- } weaponstate_t;
-
- // pmove->pm_flags
- #define PMF_DUCKED 0x00000001
- #define PMF_BACKWARDS_JUMP 0x00000002 // go into backwards land
- #define PMF_JUMPING 0x00000004 // executing a jump
- #define PMF_BACKWARDS_RUN 0x00000008 // coast down to backwards run
- #define PMF_TIME_LAND 0x00000010 // pm_time is time before rejump
- #define PMF_TIME_KNOCKBACK 0x00000020 // pm_time is an air-accelerate only time
- #define PMF_TIME_WATERJUMP 0x00000040 // pm_time is waterjump
- #define PMF_RESPAWNED 0x00000080 // clear after attack and jump buttons come up
- #define PMF_CAN_USE 0x00000100 // The server updated the animation, the pmove should set the ghoul2 anim to match.
- #define PMF_FOLLOW 0x00000200 // spectate following another player
- #define PMF_SCOREBOARD 0x00000400 // spectate as a scoreboard
- #define PMF_GHOST 0x00000800 // Your a ghost. scarry!!
- #define PMF_LADDER 0x00001000 // On a ladder
- #define PMF_LADDER_JUMP 0x00002000 // Jumped off a ladder
-
- #define PMF_ZOOMED 0x00004000
- #define PMF_ZOOM_LOCKED 0x00008000 // Zoom mode cant be changed
- #define PMF_ZOOM_REZOOM 0x00010000 // Rezoom after reload done
- #define PMF_ZOOM_DEFER_RELOAD 0x00020000 // Reload after zoomout
-
- #define PMF_LIMITED_INVENTORY 0x00040000 // inventory is limited for this player
-
- #define PMF_CROUCH_JUMP 0x00080000 // crouch jumping
- #define PMF_GOGGLES_ON 0x00100000 // goggles are on
- #define PMF_LEANING 0x00200000 // currently leaning
-
- #define PMF_AUTORELOAD 0x00400000 // autoreloading enabled
-
- #define PMF_SIAMESETWINS 0x00800000
-
- #define PMF_ALL_TIMES (PMF_TIME_WATERJUMP|PMF_TIME_LAND|PMF_TIME_KNOCKBACK)
- #define PMF_ZOOM_FLAGS (PMF_ZOOMED|PMF_ZOOM_LOCKED|PMF_ZOOM_REZOOM|PMF_ZOOM_DEFER_RELOAD)
-
- // pmove->pm_debounce
-
- #define PMD_JUMP 0x0001
- #define PMD_ATTACK 0x0002
- #define PMD_FIREMODE 0x0004
- #define PMD_USE 0x0008
- #define PMD_ALTATTACK 0x0010
- #define PMD_GOGGLES 0x0020
-
-
- #define MAXTOUCH 32
-
- typedef struct {
- // state (in / out)
- playerState_t *ps;
-
- // command (in)
- usercmd_t cmd;
- int tracemask; // collide against these types of surfaces
- int debugLevel; // if set, diagnostic output will be printed
- qboolean noFootsteps; // if the game is setup for no footsteps by the server
- qboolean gauntletHit; // true if a gauntlet attack would actually hit something
-
- int framecount;
-
- // results (out)
- int numtouch;
- int touchents[MAXTOUCH];
-
- int useEvent;
-
- vec3_t mins, maxs; // bounding box size
-
- int watertype;
- int waterlevel;
-
- animation_t *animations;
-
- float xyspeed;
-
- // for fixed msec Pmove
- int pmove_fixed;
- int pmove_msec;
-
- // callbacks to test the world
- // these will be different functions during game and cgame
- void (*trace)( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentMask );
- int (*pointcontents)( const vec3_t point, int passEntityNum );
-
- // pmove_pers_t pm_pers;
-
- int weaponAnimIdx;
- char weaponAnim[MAX_QPATH];
- char weaponEndAnim[MAX_QPATH];
- #if _Debug
- int isClient;
- #endif
- } pmove_t;
-
- extern pmove_t *pm;
-
- #define SETANIM_TORSO 1
- #define SETANIM_LEGS 2
- #define SETANIM_BOTH SETANIM_TORSO|SETANIM_LEGS//3
-
- #define SETANIM_FLAG_NORMAL 0//Only set if timer is 0
- #define SETANIM_FLAG_OVERRIDE 1//Override previous
- #define SETANIM_FLAG_HOLD 2//Set the new timer
- #define SETANIM_FLAG_RESTART 4//Allow restarting the anim if playing the same one (weapon fires)
- #define SETANIM_FLAG_HOLDLESS 8//Set the new timer
-
-
- // if a full pmove isn't done on the client, you can just update the angles
- void PM_UpdateViewAngles( playerState_t *ps, const usercmd_t *cmd );
- void Pmove (pmove_t *pmove);
-
- //===================================================================================
-
-
- // player_state->stats[] indexes
- // NOTE: may not have more than 16
- typedef enum
- {
- STAT_HEALTH,
- STAT_WEAPONS, // 16 bit fields
- STAT_ARMOR,
- STAT_DEAD_YAW, // look this direction when dead (FIXME: get rid of?)
- STAT_CLIENTS_READY, // bit mask of clients wishing to exit the intermission (FIXME: configstring?)
- STAT_FROZEN,
- STAT_GOGGLES, // Which visual enhancing device they have
- STAT_GAMETYPE_ITEMS, // Which gametype items they have
- STAT_SEED, // seed used to keep weapon firing in sync
- STAT_OUTFIT_GRENADE, // indicates which greande is chosen in the outfitting
- STAT_USEICON, // icon to display when able to use a trigger or item
- STAT_USETIME, // elased time for using
- STAT_USETIME_MAX, // total time required to use
- STAT_USEWEAPONDROP, // value to drop weapon out of view when using
-
- } statIndex_t;
-
-
- // player_state->persistant[] indexes
- // these fields are the only part of player_state that isn't
- // cleared on respawn
- // NOTE: may not have more than 16
- typedef enum
- {
- PERS_SCORE, // !!! MUST NOT CHANGE, SERVER AND GAME BOTH REFERENCE !!!
- PERS_RANK, // player rank or team rank
- PERS_TEAM, // player team
- PERS_SPAWN_COUNT, // incremented every respawn
- PERS_PLAYEREVENTS, // 16 bits that can be flipped for events
- PERS_ATTACKER, // clientnum of last damage inflicter
-
- PERS_RED_SCORE, // Blue team score
- PERS_BLUE_SCORE, // red team score
-
- } persEnum_t;
-
-
- typedef enum
- {
- GOGGLES_NONE,
- GOGGLES_NIGHTVISION,
- GOGGLES_INFRARED,
- GOGGLES_MAX
-
- } goggleType_t;
-
- // entityState_t->eFlags
- #define EF_DEAD 0x00000001 // don't draw a foe marker over players with EF_DEAD
- #define EF_EXPLODE 0x00000002 // ready to explode
- #define EF_TELEPORT_BIT 0x00000004 // toggled every time the origin abruptly changes
-
- #define EF_PLAYER_EVENT 0x00000008
- #define EF_BOUNCE 0x00000008 // for missiles
-
- #define EF_BOUNCE_HALF 0x00000010 // bounce and retain half velocity each time
- #define EF_BOUNCE_SCALE 0x00000020 // bounces using the bounce scale
- #define EF_NODRAW 0x00000040 // may have an event, but no model (unspawned items)
- #define EF_FIRING 0x00000080 // for lightning gun
- #define EF_ALT_FIRING 0x00000100 // for alt-fires, mostly for lightning guns though
- #define EF_MOVER_STOP 0x00000200 // will push otherwise
- #define EF_TALK 0x00000400 // draw a talk balloon
- #define EF_CONNECTION 0x00000800 // draw a connection trouble sprite
- #define EF_VOTED 0x00001000 // already cast a vote
- #define EF_ANGLE_OVERRIDE 0x00002000 // angle coming from the server is absolute
- #define EF_PERMANENT 0x00004000 // this entity is permanent and is never updated (sent only in the game state)
- // this should only be used in RMG!
- #define EF_NOPICKUP 0x00008000 // entity cannot be picked up
- #define EF_NOSHADOW 0x00008000 // used for bodies when they are sinking
-
- #define EF_REDTEAM 0x00010000 // Red team only
- #define EF_BLUETEAM 0x00020000 // Blue team only
- #define EF_INSKY 0x00040000 // In a sky brush
-
- #define EF_GOGGLES 0x00080000 // goggles on or not
-
- #define EF_DUCKED 0x00100000 // ducked?
- #define EF_INVULNERABLE 0x00200000 // cant be shot
-
- // reward sounds (stored in ps->persistant[PERS_PLAYEREVENTS])
- #define PLAYEREVENT_DENIEDREWARD 0x0001
- #define PLAYEREVENT_GAUNTLETREWARD 0x0002
- #define PLAYEREVENT_HOLYSHIT 0x0004
-
- // entityState_t->event values
- // entity events are for effects that take place reletive
- // to an existing entities origin. Very network efficient.
-
- // two bits at the top of the entityState->event field
- // will be incremented with each change in the event so
- // that an identical event started twice in a row can
- // be distinguished. And off the value with ~EV_EVENT_BITS
- // to retrieve the actual event number
- #define EV_EVENT_BIT1 0x00000100
- #define EV_EVENT_BIT2 0x00000200
- #define EV_EVENT_BITS (EV_EVENT_BIT1|EV_EVENT_BIT2)
-
- #define EVENT_VALID_MSEC 300
-
- typedef enum
- {
- EV_NONE,
-
- EV_FOOTSTEP,
- EV_FOOTWADE,
- EV_SWIM,
-
- EV_STEP_4,
- EV_STEP_8,
- EV_STEP_12,
- EV_STEP_16,
-
- EV_FALL_SHORT,
- EV_FALL_MEDIUM,
- EV_FALL_FAR,
-
- EV_JUMP,
- EV_WATER_FOOTSTEP,
- EV_WATER_TOUCH, // foot touches
- EV_WATER_LAND, // landed in water
- EV_WATER_CLEAR,
-
- EV_ITEM_PICKUP, // normal item pickups are predictable
-
- EV_NOAMMO,
- EV_CHANGE_WEAPON,
- EV_CHANGE_WEAPON_CANCELLED,
- EV_READY_WEAPON,
- EV_FIRE_WEAPON,
- EV_ALT_FIRE,
-
- EV_USE, // +Use key
-
- EV_ITEM_RESPAWN,
- EV_ITEM_POP,
- EV_PLAYER_TELEPORT_IN,
- EV_PLAYER_TELEPORT_OUT,
-
- EV_GRENADE_BOUNCE, // eventParm will be the soundindex
-
- EV_PLAY_EFFECT,
-
- EV_GENERAL_SOUND,
- EV_GLOBAL_SOUND, // no attenuation
- EV_ENTITY_SOUND,
-
- EV_GLASS_SHATTER,
-
- EV_MISSILE_HIT,
- EV_MISSILE_MISS,
-
- EV_BULLET_HIT_WALL,
- EV_BULLET_HIT_FLESH,
- EV_BULLET, // otherEntity is the shooter
-
- EV_EXPLOSION_HIT_FLESH,
-
- EV_PAIN,
- EV_PAIN_WATER,
- EV_OBITUARY,
-
- EV_DESTROY_GHOUL2_INSTANCE,
-
- EV_WEAPON_CHARGE,
- EV_WEAPON_CHARGE_ALT,
-
- EV_DEBUG_LINE,
- EV_TESTLINE,
- EV_STOPLOOPINGSOUND,
-
- EV_BODY_QUEUE_COPY,
- EV_BOTWAYPOINT,
-
- // Procedural gore event.
- EV_PROC_GORE,
-
- EV_GAMETYPE_RESTART, // gametype restarting
- EV_GAME_OVER, // game is over
-
- EV_GOGGLES, // goggles turning on/off
-
- EV_WEAPON_CALLBACK,
-
- } entity_event_t; // There is a maximum of 256 events (8 bits transmission, 2 high bits for uniqueness)
-
- typedef enum
- {
- VEV_TALKSTART,
- VEV_TALKSTOP,
-
- } voice_event_t;
-
- typedef enum
- {
- GAME_OVER_TIMELIMIT,
- GAME_OVER_SCORELIMIT,
-
- } game_over_t;
-
- typedef enum {
- GTS_RED_CAPTURE,
- GTS_BLUE_CAPTURE,
- GTS_RED_RETURN,
- GTS_BLUE_RETURN,
- GTS_RED_TAKEN,
- GTS_BLUE_TAKEN,
- GTS_REDTEAM_SCORED,
- GTS_BLUETEAM_SCORED,
- GTS_REDTEAM_TOOK_LEAD,
- GTS_BLUETEAM_TOOK_LEAD,
- GTS_TEAMS_ARE_TIED
- } global_team_sound_t;
-
-
- // Time between location updates
- #define TEAM_LOCATION_UPDATE_TIME 1000
-
- // How many players on the overlay
- #define TEAM_MAXOVERLAY 32
-
- //---------------------------------------------------------
-
- typedef enum
- {
- IT_BAD,
- IT_WEAPON, // Weapon item
- IT_AMMO, // Ammo item
- IT_ARMOR, // Armor item
- IT_HEALTH, // Healh item
- IT_GAMETYPE, // Custom gametype related item
- IT_BACKPACK, // replenish backpack item
- IT_PASSIVE, // Passive items
-
- } itemType_t;
-
- #define MAX_ITEM_MODELS 4
-
- typedef struct gitem_s
- {
- char *classname; // spawning name
- char *pickup_sound;
- char *world_model[MAX_ITEM_MODELS];
-
- char *icon;
- char *render;
- char *pickup_prefix; // an, some, a, the, etc..
- char *pickup_name; // for printing on pickup
-
- int quantity; // for ammo how much
- itemType_t giType; // IT_* flags
-
- int giTag;
-
- char *precaches; // string of all models and images this item will use
- char *sounds; // string of all sounds this item will use
-
- int outfittingGroup;
-
- } gitem_t;
-
- // included in both the game dll and the client
- extern gitem_t bg_itemlist[];
- extern int bg_numItems;
-
- gitem_t* BG_FindItem ( const char *pickupName );
- gitem_t* BG_FindClassnameItem ( const char *classname );
- gitem_t* BG_FindWeaponItem ( weapon_t weapon );
- gitem_t* BG_FindGametypeItem ( int index );
- gitem_t* BG_FindGametypeItemByID ( int itemid );
-
-
- #define ITEM_INDEX(x) ((x)-bg_itemlist)
-
- qboolean BG_CanItemBeGrabbed( int gametype, const entityState_t *ent, const playerState_t *ps );
-
-
- // g_dmflags->integer flags
- #define DF_NO_FALLING 8
- #define DF_FIXED_FOV 16
- #define DF_NO_FOOTSTEPS 32
-
- // content masks
- #define MASK_ALL (-1)
- #define MASK_SOLID (CONTENTS_SOLID|CONTENTS_TERRAIN)
- #define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_TERRAIN|CONTENTS_PLAYERCLIP|CONTENTS_BODY|CONTENTS_SHOTCLIP)
- #define MASK_DEADSOLID (CONTENTS_SOLID|CONTENTS_TERRAIN|CONTENTS_PLAYERCLIP)
- #define MASK_WATER (CONTENTS_WATER)
- #define MASK_OPAQUE (CONTENTS_SOLID|CONTENTS_TERRAIN|CONTENTS_SLIME|CONTENTS_LAVA)
- #define MASK_SHOT (CONTENTS_SOLID|CONTENTS_TERRAIN|CONTENTS_BODY|CONTENTS_SHOTCLIP)
-
-
- //
- // entityState_t->eType
- //
- typedef enum
- {
- ET_GENERAL,
- ET_PLAYER,
- ET_ITEM,
- ET_MISSILE,
- ET_MOVER,
- ET_BEAM,
- ET_PORTAL,
- ET_SPEAKER,
- ET_PUSH_TRIGGER,
- ET_TELEPORT_TRIGGER,
- ET_INVISIBLE,
- ET_GRAPPLE, // grapple hooked on wall
- ET_BODY,
- ET_DAMAGEAREA,
- ET_TERRAIN,
-
- ET_DEBUG_CYLINDER,
-
- ET_GAMETYPE_TRIGGER,
-
- ET_WALL,
-
- ET_EVENTS // any of the EV_* events can be added freestanding
- // by setting eType to ET_EVENTS + eventNum
- // this avoids having to set eFlags and eventNum
- } entityType_t;
-
-
- void BG_AddLadder ( vec3_t absmin, vec3_t absmax, vec3_t fwd );
- int BG_FindLadder ( vec3_t pos );
-
- void BG_EvaluateTrajectory ( const trajectory_t *tr, int atTime, vec3_t result );
- void BG_EvaluateTrajectoryDelta ( const trajectory_t *tr, int atTime, vec3_t result );
- void BG_AddPredictableEventToPlayerstate( int newEvent, int eventParm, playerState_t *ps );
-
- void BG_PlayerStateToEntityState( playerState_t *ps, entityState_t *s, qboolean snap );
- void BG_PlayerStateToEntityStateExtraPolate( playerState_t *ps, entityState_t *s, int time, qboolean snap );
- void BG_PlayerAngles( vec3_t startAngles, vec3_t legs[3],
- vec3_t legsAngles, vec3_t lowerTorsoAngles, vec3_t upperTorsoAngles, vec3_t headAngles,
- int leanOffset, int painTime, int painDirection, int currentTime,
- animInfo_t* torsoInfo, animInfo_t* legsInfo,
- int frameTime, vec3_t velocity, qboolean dead, float movementDir, void *ghoul2 );
- qboolean BG_ParseAnimationFile ( const char *filename, animation_t* animations );
-
- float BG_CalculateLeanOffset ( int leanTime );
-
- qboolean BG_PlayerTouchesItem( playerState_t *ps, entityState_t *item, int atTime );
-
- TAnimWeapon *BG_GetWeaponAnim(int weaponAction,playerState_t *ps,int *animIndex);
- TNoteTrack *BG_GetWeaponNote( playerState_t* ps, int weapon, int anim, int animChoice, int callbackStep );
-
- typedef enum
- {
- WACT_READY,
- WACT_IDLE,
- WACT_FIRE,
- WACT_FIRE_END, // Special fire-end action for some weapons.
- WACT_ALTFIRE,
- WACT_ALTFIRE_END, // Special altfire-end action for some weapons.
- WACT_RELOAD,
- WACT_ALTRELOAD,
- WACT_RELOAD_END, // Special reload-end for M590 shotgun
- WACT_PUTAWAY,
- WACT_ZOOMIN,
- WACT_ZOOMOUT,
- WACT_CHARGE,
- WACT_ALTCHARGE
- } WACT;
-
-
- #define ARENAS_PER_TIER 4
- #define MAX_ARENAS 1024
- #define MAX_ARENAS_TEXT 8192
-
- #define MAX_BOTS 1024
- #define MAX_BOTS_TEXT 8192
-
-
- #define HL_NONE 0x00000000 // 0
-
- #define HL_FOOT_RT 0x00000001
- #define HL_FOOT_LT 0x00000002
- #define HL_LEG_UPPER_RT 0x00000004
- #define HL_LEG_UPPER_LT 0x00000008
- #define HL_LEG_LOWER_RT 0x00000010 // 5
-
- #define HL_LEG_LOWER_LT 0x00000020
- #define HL_HAND_RT 0x00000040
- #define HL_HAND_LT 0x00000080
- #define HL_ARM_RT 0x00000100
- #define HL_ARM_LT 0x00000200 // 10
-
- #define HL_HEAD 0x00000400
- #define HL_WAIST 0x00000800
- #define HL_BACK_RT 0x00001000
- #define HL_BACK_LT 0x00002000
- #define HL_BACK 0x00004000 // 15
-
- #define HL_CHEST_RT 0x00008000
- #define HL_CHEST_LT 0x00010000
- #define HL_CHEST 0x00020000
- #define HL_NECK 0x00040000
- #define HL_DEBUG 0x00080000 // 20
-
- #define HL_MAX 0x00100000
-
- #define HL_DISMEMBERBIT 0x80000000
-
- #define GORE_NONE 0x80000000
-
- /*
- typedef enum
- {
- HL_NONE,
-
- HL_FOOT_RT,
- HL_FOOT_LT,
- HL_LEG_UPPER_RT,
- HL_LEG_UPPER_LT,
- HL_LEG_LOWER_RT,
- HL_LEG_LOWER_LT,
- HL_HAND_RT,
-
- HL_HAND_LT,
- HL_ARM_RT,
- HL_ARM_LT,
- HL_HEAD,
- HL_WAIST,
-
- HL_BACK_RT,
- HL_BACK_LT,
- HL_BACK,
- HL_CHEST_RT,
- HL_CHEST_LT,
-
- HL_CHEST,
- HL_NECK,
-
- HL_DEBUG
- } hitLocation_t;
- */
-
- /*******************************************************************************
- *
- * Dynamic gametype system
- *
- *******************************************************************************/
-
- #define MAX_GAMETYPES 128
- #define MAX_GAMETYPE_PHOTOS 4
-
- typedef enum
- {
- RT_NORMAL,
- RT_DELAYED,
- RT_INTERVAL,
- RT_NONE,
- RT_MAX
-
- } respawnType_t;
-
- typedef struct gametypePhoto_s
- {
- const char* name;
- const char* displayName;
-
- } gametypePhoto_t;
-
- typedef struct gametypeData_s
- {
- const char* name;
- const char* displayName;
- const char* script;
- const char* description;
- const char* basegametype;
-
- respawnType_t respawnType;
- qboolean pickupsDisabled;
- qboolean teams;
- qboolean showKills;
-
- int backpack;
-
- gametypePhoto_t photos[4];
-
- } gametypeData_t;
-
- extern gametypeData_t bg_gametypeData[];
- extern int bg_gametypeCount;
-
- qboolean BG_BuildGametypeList ( void );
- int BG_FindGametype ( const char* name );
-
- /*******************************************************************************
- *
- * Player model templates
- *
- *******************************************************************************/
-
- #define MAX_OUTFITTING_NAME 64
-
- typedef struct goutfitting_s
- {
- char name [ MAX_OUTFITTING_NAME ];
- int items [ OUTFITTING_GROUP_MAX ];
-
- } goutfitting_t;
-
- typedef struct SSurfaceList
- {
- const char *mName;
-
- struct SSurfaceList *mNext;
-
- } TSurfaceList;
-
- typedef struct SItemTemplate
- {
- const char *mName;
- const char *mModel;
- TSurfaceList *mOnList;
- TSurfaceList *mOffList;
-
- struct SItemTemplate *mNext;
-
- } TItemTemplate;
-
- typedef struct SInventoryTemplate
- {
- const char *mName;
- const char *mBolt;
- TItemTemplate *mItem;
-
- struct SInventoryTemplate *mNext;
-
- qboolean mOnBack;
-
- int mBoltIndex;
- int mModelIndex;
-
- } TInventoryTemplate;
-
- typedef struct SSkinTemplate
- {
- const char *mSkin;
- TInventoryTemplate *mInventory;
-
- struct SSkinTemplate *mNext;
-
- } TSkinTemplate;
-
- #define MAX_MODEL_SOUNDS 8
- #define MAX_IDENTITIES 256
- #define MAX_OUTFITTINGS 64
- #define MAX_OUTFITTING_GROUPITEM 10
-
- typedef struct SModelSounds
- {
- const char *mName;
- const char *mSounds[MAX_MODEL_SOUNDS];
- int mCount;
-
- struct SModelSounds *mNext;
-
- } TModelSounds;
-
- typedef struct SCharacterTemplate
- {
- const char *mName;
- const char *mModel;
- const char *mParentName;
- const char *mFormalName;
- int mSoundCount;
- qboolean mDeathmatch;
-
- TInventoryTemplate *mInventory;
- TSkinTemplate *mSkins;
- TModelSounds *mSounds;
-
- struct SCharacterTemplate *mParent;
- struct SCharacterTemplate *mNext;
-
- } TCharacterTemplate;
-
- typedef struct SIdentity
- {
- const char *mName;
- const char *mTeam;
- TCharacterTemplate *mCharacter;
- TSkinTemplate *mSkin;
- qhandle_t mIcon;
-
- } TIdentity;
-
- extern TCharacterTemplate *bg_characterTemplates;
- extern TItemTemplate *bg_itemTemplates;
- extern TIdentity bg_identities[];
- extern int bg_identityCount;
- extern goutfitting_t bg_outfittings[];
- extern int bg_outfittingCount;
- extern int bg_outfittingGroups[][10];
- extern char *bg_weaponNames[WP_NUM_WEAPONS];
- extern stringID_table_t bg_animTable [MAX_ANIMATIONS+1];
-
- TIdentity* BG_FindIdentity ( const char *identityName );
- TIdentity* BG_FindTeamIdentity ( const char *identityName, int index );
- TCharacterTemplate* BG_FindCharacterTemplate ( const char *name );
- const char* BG_GetModelSound ( const char *identityName, const char *SoundGroup, int index );
- qboolean BG_ParseNPCFiles ( void );
- int BG_ParseSkin ( const char* filename, char* pairs, int pairsSize );
-
- qboolean BG_IsWeaponAvailableForOutfitting ( weapon_t weapon, int level );
- void BG_SetAvailableOutfitting ( const char* available );
- void BG_DecompressOutfitting ( const char* compressed, goutfitting_t* outfitting );
- void BG_CompressOutfitting ( goutfitting_t* outfitting, char* compressed, int size );
- int BG_ParseOutfittingTemplates ( qboolean force );
- int BG_FindOutfitting ( goutfitting_t* outfitting);
-
- /*******************************************************************************
- *
- * Trap calls that are shared in game, cgame, and user interface and accessed
- * by the bg_ code.
- *
- *******************************************************************************/
-
- typedef void *TGenericParser2;
- typedef void *TGPGroup;
- typedef void *TGPValue;
-
- // CGenericParser2 (void *) routines
- TGenericParser2 trap_GP_Parse ( char **dataPtr, qboolean cleanFirst, qboolean writeable );
- TGenericParser2 trap_GP_ParseFile ( char *fileName, qboolean cleanFirst, qboolean writeable );
- void trap_GP_Clean ( TGenericParser2 GP2 );
- void trap_GP_Delete ( TGenericParser2 *GP2 );
- TGPGroup trap_GP_GetBaseParseGroup ( TGenericParser2 GP2 );
-
- // CGPGroup (void *) routines
- qboolean trap_GPG_GetName ( TGPGroup GPG, char *Value);
- TGPGroup trap_GPG_GetNext ( TGPGroup GPG);
- TGPGroup trap_GPG_GetInOrderNext ( TGPGroup GPG);
- TGPGroup trap_GPG_GetInOrderPrevious ( TGPGroup GPG);
- TGPValue trap_GPG_GetPairs ( TGPGroup GPG);
- TGPGroup trap_GPG_GetInOrderPairs ( TGPGroup GPG);
- TGPGroup trap_GPG_GetSubGroups ( TGPGroup GPG);
- TGPGroup trap_GPG_GetInOrderSubGroups ( TGPGroup GPG);
- TGPGroup trap_GPG_FindSubGroup ( TGPGroup GPG, const char *name);
- TGPValue trap_GPG_FindPair ( TGPGroup GPG, const char *key);
- qboolean trap_GPG_FindPairValue ( TGPGroup GPG, const char *key, const char *defaultVal, char *Value);
-
- // CGPValue (void *) routines
- qboolean trap_GPV_GetName ( TGPValue GPV, char *Value);
- TGPValue trap_GPV_GetNext ( TGPValue GPV);
- TGPValue trap_GPV_GetInOrderNext ( TGPValue GPV );
- TGPValue trap_GPV_GetInOrderPrevious ( TGPValue GPV );
- qboolean trap_GPV_IsList ( TGPValue GPV );
- qboolean trap_GPV_GetTopValue ( TGPValue GPV, char *Value );
- TGPValue trap_GPV_GetList ( TGPValue GPV );
-
- extern int trap_FS_GetFileList ( const char *path, const char *extension, char *listbuf, int bufsize );
-
- void *trap_VM_LocalAlloc ( int size );
- void *trap_VM_LocalAllocUnaligned ( int size ); // WARNING!!!! USE WITH CAUTION!!! BEWARE OF DOG!!!
- void *trap_VM_LocalTempAlloc( int size );
- void trap_VM_LocalTempFree( int size ); // free must be in opposite order of allocation!
- const char *trap_VM_LocalStringAlloc ( const char *source );
-
- #endif // __BG_PUBLIC_H__
-